package com.poi.tl.sample.quickstart.app.tags;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.MergeCellRule;
import com.deepoove.poi.data.MergeCellRule.Grid;
import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.data.Rows;
import com.deepoove.poi.data.Tables;
import com.poi.tl.sample.quickstart.consts.AppConsts;
import java.io.FileOutputStream;
import java.util.HashMap;
import org.springframework.core.io.ClassPathResource;

public class _4_3MergeTableExport {

  public static void main(String[] args) throws Exception {
    ClassPathResource templateFile = new ClassPathResource(AppConsts.TAG_TEMPLATE_CLASS_PATH + "_4table_template.docx");
    String outFile = AppConsts.EXPORT_PATH + "_4_3_merge_table_template_output.docx";

    // 1 	compile 编译模板
    XWPFTemplate template = XWPFTemplate.compile(templateFile.getInputStream()).render(
        // 2 render 渲染数据
        new HashMap<String, Object>(){{
          // 合并第1行所有单元格的表格
          RowRenderData row0 = Rows.of("列0", "列1", "列2").center().bgColor("4472C4").create();
          RowRenderData row1 = Rows.create("没有数据", null, null);
          MergeCellRule rule = MergeCellRule.builder().map(Grid.of(1, 0), Grid.of(1, 2)).build();
          put("table0", Tables.of(row0, row1).mergeRule(rule).create());

          /**
           * 支持的属性如下：
           * 行数据
           * 单元格数据
           * 单元格内段落
           * 单元格内文本
           * 单元格内图片
           * 单元格内段落文本的样式：对齐
           * 单元格样式：垂直对齐方式，背景色
           * 行样式：行高(单位cm)
           * 表格样式：表格对齐、边框样式
           * 表格宽度(单位cm)，表格的最大宽度 = 页面宽度 - 页边距宽度 * 2，页面宽度为A4(20.99 * 29.6，页边距为3.18 * 2.54)的文档最大表格宽度14.63cm。
           * 单元格合并规则，比如第0行第0列至第1行第2列单元格合并
           */

        }});
    // 3 write 输出到流
    template.writeAndClose(new FileOutputStream(outFile));
  }

}
